/*
 * arvore.h
 *
 *  Created on: 25/04/2011
 *      Author: joao
 */

#ifndef ARVORE_H_
#define ARVORE_H_

#include <stdio.h>

typedef int Tipo;

typedef struct _no {
        Tipo info;
        int cont;
        int bal; /* guarda o balanceamento da arvore */
        int n_elem; /* Guarda o numero de elementos na sub-arvore associada a ele*/
        struct _no *esq;
        struct _no *dir;
      } no;


void insereBalanceado(int menor, int maior, no **raiz);

void rot_dir(no **p);
void rot_esq(no **p);
void insere_topo(int x, no **p);
no *selecao(int k, no *raiz);
void sobe_menor(no **p);
no *une_dir_esq(no *e, no **d);
void remove_no(int x, no **p);


//aula passada
void P(no *p);
void pre_ordem(no *raiz);
void in_ordem(no *raiz);
void pos_ordem(no *raiz);

no  *busca(Tipo x, no *raiz);
void BuscaInsere(Tipo x, no **p);
/*void iniciaNovoNo (no **p);*/
void imprime(no *raiz, int nivel);
void imprimeArquivo(no *raiz, FILE *saida);



#endif /* ARVORE_H_ */
